<?php

namespace app\controller;

use app\BaseController;
use app\model\OperateModel;
use think\facade\Validate;
use think\Request;
use app\middleware\Check;
use think\validate\ValidateRule;
use \think\response\Json;
/**运营方管理
 * Class Operate
 * @package app\controller
 */
class Operate extends BaseController
{
    protected $middleware = [Check::class];

    /**超管获取运营方列表
     * @param Request $request
     * @return Json
     */
    public function superList(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        // 接收参数
        $input['limit'] = $request->post('limit'); // 每页限制数量
        $input['page'] = $request->post('page');// 当前页
        $input['name'] = $request->post('name'); // 运营方名称
        // 参数校验
        $validate = Validate::rule([
            'limit' => ValidateRule::isRequire(null, '缺少参数'),
            'page' => ValidateRule::isRequire(null, '缺少参数'),
            'name' => function ($value) {
                return $value === null ? '缺少参数' : true;
            }
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return OperateModel::superList($input, $request->post('token'));
    }


    /**简单运营方列表
     * @param Request $request
     * @return Json
     */
    public function simpleList(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        // 接收参数
        // 参数校验
        // 逻辑处理
        return OperateModel::simpleList($request->post('token'));
    }

    /**添加运营方
     * @param Request $request
     * @return Json
     */
    public function add(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        $input['account'] = $request->post('account');//用户名
        $input['pwd'] = $request->post('pwd');//密码
        $input['repwd'] = $request->post('repwd');//repwd
        $input['phone'] = $request->post('phone');//手机号码
        $input['name'] = $request->post('name'); // 运营方名称
        $input['bank_no'] = $request->post('bank_no'); // 银行卡号
        $input['bank_name'] = $request->post('bank_name'); // 开户号
        // 参数校验
        $validate = Validate::rule([
            'account' => ValidateRule::isRequire(null, '缺少参数'),
            'pwd' => ValidateRule::isRequire(null, '缺少参数'),
            'repwd' => function ($value, $all) {
                return $value === $all['pwd'] ? true : '两次密码输入不一致';
            },
            'phone' => ValidateRule::isRequire(null, '缺少参数'),
            'name' => ValidateRule::isRequire(null, '缺少参数'),
            'bank_no' => ValidateRule::isRequire(null, '缺少参数'),
            'bank_name' => ValidateRule::isRequire(null, '缺少参数')
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return OperateModel::add($input, $request->post('token'));
    }

    /**删除运营方
     * @param Request $request
     * @return Json
     */
    public function delete(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        $input['id'] = $request->post('id');//运营方id
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数'),
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return OperateModel::delete($input, $request->post('token'));
    }

    /**获取单个信息
     * @param Request $request
     * @return Json
     */
    public function only(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        $input['id'] = $request->post('id');//运营方id
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数'),
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return OperateModel::only($input, $request->post('token'));
    }

    /**编辑运营方
     * @param Request $request
     * @return Json
     */
    public function edit(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        $input['id'] = $request->post('id');//运营方id
        $input['account'] = $request->post('account');//运营方账号
        $input['name'] = $request->post('name');//运营方名称
        $input['phone'] = $request->post('phone');//运营方电话
        $input['status'] = $request->post('status');//运营方状态
        $input['bank_no'] = $request->post('bank_no'); // 银行卡号
        $input['bank_name'] = $request->post('bank_name'); // 开户号
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数'),
            'account' => ValidateRule::isRequire(null, '缺少参数'),
            'name' => ValidateRule::isRequire(null, '缺少参数'),
            'phone' => ValidateRule::isRequire(null, '缺少参数'),
            'status' => ValidateRule::isRequire(null, '缺少参数'),
            'bank_no' => ValidateRule::isRequire(null, '缺少参数'),
            'bank_name' => ValidateRule::isRequire(null, '缺少参数'),
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return OperateModel::edit($input, $request->post('token'));
    }

    /**修改密码
     * @param Request $request
     * @return Json
     */
    public function changePwd(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        $input['id'] = $request->post('id');//运营方id
        $input['pwd'] = $request->post('pwd');//运营方密码
        $input['chkpwd'] = $request->post('chkpwd');//运营方再次密码
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数'),
            'pwd' => ValidateRule::isRequire(null, '缺少参数'),
            'chkpwd' => function ($value, $all) {
                return $value === $all['pwd'] ? true : '两次密码输入不一致';
            },
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return OperateModel::changePwd($input, $request->post('token'));
    }

    /**获取商户简单列表
     * @param Request $request
     * @return Json
     */
    public function getStoreList(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        // 逻辑处理
        return OperateModel::getStoreList($request->post('token'));
    }

    /**获取超时配送时长 延迟派单时间
     * @param Request $request
     * @return Json
     */
    public function getConf(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        // 逻辑处理
        return OperateModel::getConf($request->post('token'));
    }

    /**修改超时配送时长 延迟派单时间
     * @param Request $request
     * @return Json
     */
    public function confEdit(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        $input['id'] = $request->post('id');//运营方id
        $input['delivery_time'] = $request->post('delivery_time');//配送时长（分钟）
        $input['send_delaytime'] = $request->post('send_delaytime');//骑手自动派单时间(分钟)
        // 参数校验
        $validate = Validate::rule([
            'id' => ValidateRule::isRequire(null, '缺少参数'),
            'delivery_time' => ValidateRule::isRequire(null, '缺少参数'),
            'send_delaytime' => ValidateRule::isRequire(null, '缺少参数')
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return OperateModel::confEdit($input, $request->post('token'));
    }

    /**获取骑手列表
     * @param Request $request
     * @return Json
     */
    public function getSenderList(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        $input['name'] = $request->post('name');//骑手名称
        // 逻辑处理
        return OperateModel::getSenderList($input, $request->post('token'));
    }

    /**获取超时骑手订单
     * @param Request $request
     * @return Json
     */
    public function getOvertimeList(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        $input['limit'] = $request->post('limit'); // 每页限制数量
        $input['page'] = $request->post('page');// 当前页
        $input['start'] = $request->post('start');//起始时间
        $input['end'] = $request->post('end');//结束时间
        $input['send_id'] = $request->post('send_id');//骑手id
        // 参数校验
        $validate = Validate::rule([
            'limit' => ValidateRule::isRequire(null, '缺少参数'),
            'page' => ValidateRule::isRequire(null, '缺少参数'),
            'start' => function ($value) {
                return $value === null ? '缺少参数' : true;
            },
            'end' => function ($value) {
                return $value === null ? '缺少参数' : true;
            },
            'send_id' => function ($value) {
                return $value === null ? '缺少参数' : true;
            },
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return OperateModel::getOvertimeList($input, $request->post('token'));
    }

    /**获取超时骑手订单
     * @param Request $request
     * @return Json
     */
    public function overtimeDetail(Request $request)
    {
        if (!request()->isPost()) return jsonFail('请采用正确的方式登录!');
        $input['order_ids'] = $request->post('order_ids'); // 每页限制数量
        $input['limit'] = $request->post('limit'); // 每页限制数量
        $input['page'] = $request->post('page');// 当前页
        // 参数校验
        $validate = Validate::rule([
            'order_ids' => ValidateRule::isRequire(null, '缺少参数'),
            'limit' => ValidateRule::isRequire(null, '缺少参数'),
            'page' => ValidateRule::isRequire(null, '缺少参数'),
        ]);

        if (!$validate->check($input)) {
            return jsonFail($validate->getError());
        }
        // 逻辑处理
        return OperateModel::overtimeDetail($input, $request->post('token'));
    }
}
